home *** CD-ROM | disk | FTP | other *** search
/ PsL Monthly 1993 December / PSL Monthly Shareware CD-ROM (December 1993).iso / prgmming / dos / c / rdcf.exe / CACHE.H < prev    next >
C/C++ Source or Header  |  1993-01-15  |  1KB  |  44 lines

  1. /* Reentrant Cache System 1.1 */
  2.  
  3. #ifndef _CACHE
  4. #define _CACHE
  5.  
  6. struct cache_block
  7. {
  8.   struct cache_block *next;
  9.   unsigned short sector;
  10.   unsigned char drive;
  11.   unsigned char status;
  12.   unsigned char data[1];
  13. };
  14.  
  15. struct cache
  16. {
  17.   unsigned short error_sector;
  18.   unsigned short error_drive;
  19.   unsigned short sector_size;
  20.   unsigned (*drive_access)(int, unsigned, unsigned, void *);
  21.   struct cache_block *first;
  22.   struct cache_block *last;
  23.   unsigned empty;
  24.   unsigned clean;
  25.   unsigned dirty;
  26. };
  27.  
  28. #define CACHE_FLUSH (1<<0)
  29. #define CACHE_CLEAR (1<<1)
  30.  
  31. struct cache *cache_initialize(unsigned (*)(int, unsigned, unsigned, void *),
  32.   unsigned, unsigned);
  33. unsigned cache_access(struct cache *, int, unsigned, unsigned, void *);
  34. unsigned cache_flush_and_or_clear(struct cache *, int, int);
  35. void cache_free(struct cache *);
  36.  
  37. #define cache_flush(q,d) cache_flush_and_or_clear(q,d,CACHE_FLUSH)
  38. #define cache_clear(q,d) cache_flush_and_or_clear(q,d,CACHE_CLEAR)
  39. #define cache_flush_and_clear(q,d) \
  40.   cache_flush_and_or_clear(q,d,CACHE_FLUSH+CACHE_CLEAR)
  41.  
  42. #endif
  43.  
  44.